import 'package:flutter/material.dart';

/**
 * 
 * SnackBar的使用
 * SnackBar是用户操作后，显示提示信息的一个控件，类似Tost，会自动隐藏。SnackBar是以Scaffold的showSnackBar方法来进行显示的。
 * 
 * Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
 * 
 * 
 *  */ 

void main()=>runApp(
  MaterialApp(
    title: '里面点击给外面通知',
    home: lookXiaojiejie(),
  )
);

class lookXiaojiejie extends StatelessWidget{
  @override

  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(title: new Text('找小姐姐'),),
      body: Center(
        child: routerButton(),
      ),
    );
  }

}

// 跳转的button
class routerButton extends StatelessWidget{
  @override

  Widget build(BuildContext context){
    return RaisedButton(
      onPressed: (){
        navigatorXiaoJieJie(context);
      },
      child: Text('跳转找小姐姐'),
    );
  }

  navigatorXiaoJieJie(BuildContext context) async{ //async是启动异步方法
    final result = await Navigator.push(
      context, 
      MaterialPageRoute(
        builder: (context)=>xiaojieijeList()
      )
    );
    // 类似toal弹窗，会自动消失
    Scaffold.of(context).showSnackBar(SnackBar(content:Text('$result')));
  }
}

// 内页列表
class xiaojieijeList extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(
        title: new Text('小姐姐列表'),
      ),
      body: Column(
        children: <Widget>[
          RaisedButton(
            child: new Text('小姐姐1号'),
            onPressed: (){
              // 返回数据其实是特别容易的，只要在返回时带第二个参数就可以了。
              // Navigator.pop(context,'xxxx');  //xxx就是返回的参数
              Navigator.pop(context,'我是小姐姐1号');
            },
          ),
          RaisedButton(
            child: new Text('小姐姐2号'),
            onPressed: (){
              Navigator.pop(context,'我是小姐姐2号');
            },
          )
        ],
      ),
    );
  }
}